package Gj_galaxy

import (
	io "io"

	"github.com/vmihailenco/msgpack"
)

type MessageType uint8

const (
	_ MessageType = iota
	M_OPEN
	M_CONNECT
	M_EVENT
	M_RESPONSE
	M_SEND
	M_CLOSE
)

//go:generate msgp
//msgp:tuple MessageMsg
type MessageMsg struct {
	Region string        `msg:"region"`
	Type   MessageType   `msg:"type"`
	From   string        `msg:"from"`
	Rid    int           `msg:"rid"`
	Room   string        `msg:"room"`
	Data   []interface{} `msg:"data"`
	to     []string
	alloc  int32
}

//封包
func (p *MessageMsg) Encode(writer io.Writer) error {
	enc := msgpack.NewEncoder(writer)
	return enc.Encode(p)
}

//解包
func (p *MessageMsg) Decode(reader io.Reader) error {
	dec := msgpack.NewDecoder(reader)
	return dec.Decode(p)
}

func (p *MessageMsg) PacketData() ([]byte, error) {
	return msgpack.Marshal(p)
}

func (p *MessageMsg) UnpackData(b []byte) error {
	return msgpack.Unmarshal(b, &p)
}
